ReactNative SDK

最后更新时间:2020年7月17日

产品概述

MapGIS Mobile for ReactNative是什么

MapGIS Mobile for ReactNative 开发 SDK 具备全面 GIS 功能, 基于高性能跨平台的移动内核,提升全空间三维能力,拥抱地理大数据与 AR 等技术,全面支持离线和在线模式的移动 GIS 应用。

MapGIS Mobile for ReactNative全面支持64位系统,支持全新MapGIS HDB本地矢量数据库格式,性能更出色;矢量瓦片大幅提升渲染性能;持续提升第三方数据源支持能力;不断丰富实用的工具模块;适配Smaryun生态的全新云许可。

目前,MapGIS Mobile for ReactNative提供的功能模块包括:>>查看功能详情


适用对象

本套SDK面向广大想要开发移动端GIS应用的开发者,具有JavaScript基础、并对GIS有一定了解的开发者可快速开发出在Android和IOS平台下运行的移动GIS应用,较好解决多平台差异适配问题。如果您在使用过程中遇到任何问题,或对接口有任何意见或建议,欢迎您随时向我们交流反馈!

二次开发包SDK

MapGIS Mobile for ReactNative全面开源,目前在github与gitee上均有仓库,包括开发库、API文档,同时也同步提供了开发示例。

githubhttps://github.com/MapGIS

giteehttps://gitee.com/osmapgis

开源产品

MapGIS Mobile for ReactNative开源产品

开发库(开源仓库)

giteehttps://gitee.com/osmapgis/MapGIS-Mobile-React-Native

RN产品

MapGIS Mobile for ReactNative

githubhttps://github.com/MapGIS/MapGIS-Mobile-React-Native

RN产品

MapGIS Mobile for ReactNative

配套资源

基于此开源仓库,结合云开发世界资源中心发布的配套二次开发资源(文档、示例、视频、教程等),帮助您快速开发for ReactNative的移动GIS APP。

司马云配套资源:http://www.smaryun.com/dev/resource_center.html#/type27/tag186/page1

如何使用

1、安装

在React Native项目中安装 @mapgis/mobile-react-native 包。

    yarn add @mapgis/mobile-react-native
    # or with npm
    # npm install @mapgis/mobile-react-native

2、链接原生库

linking is automatic,不需要执行任何操作。

如果您使用的是旧版本的React Native,则需要手动链接:

    react-native link @mapgis/mobile-react-native

3、用法

    // In App.js
    import React, { Component } from "react";
    import { Platform, StyleSheet, View, PermissionsAndroid } from "react-native";
    import { Environment, MGMapView } from "@mapgis/mobile-react-native";

    export default class App extends Component {
      onGetInstance = mapView => {
        this.mapView = mapView;
        this.openMap();
      };

      openMap = async () => {
        //请求权限
        await requestMultiplePermission();

        //初始化环境目录
        var environmnetModule = new Environment();
        var environmnet = await environmnetModule.createObj();
        await environmnet.initialize("MapGISSample");

        //请求授权
        await environmnet.requestAuthorization();

        //加载文档
        await this.mapView.loadFromFile(
          "MapGISSample/Map/MapShow/WuHan/WuHan.mapx"
        );
      };

      render() {
        return (
          
            
          
        );
      }
    }

    function checkGranted(granteds) {
      const values = Object.values(granteds);
      let isGranted = true;
      for (let i = 0; i < values.length - 1; i++) {
        if (values[i] != values[i + 1]) {
          isGranted = false;
          break;
        }
      }
      if (isGranted && values[0] === PermissionsAndroid.RESULTS.GRANTED) {
        return true;
      }
      return false;
    }

    async function requestMultiplePermission() {
      if (Platform.OS === "ios") return;

      try {
        const permissions = [
          PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
          PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE
        ];
        //返回得是对象类型
        const granteds = await PermissionsAndroid.requestMultiple(permissions);
        if (!checkGranted(granteds)) {
          throw new Error("授权拒绝,无法正常使用本应用");
        }
      } catch (err) {
        throw new Error("授权失败,无法正常使用本应用");
      }
    }

    const styles = StyleSheet.create({
      container: {
        flex: 1
      },
      mapView: {
        flex: 1,
        alignSelf: "stretch"
      }
    });

二次开发库

MapGIS Mobile for ReactNative为广大开发者提供了JavaScript的开发库,通过开源平台gitee或github上拉取,使用简便。

giteehttps://gitee.com/osmapgis/MapGIS-Mobile-React-Native

githubhttps://github.com/MapGIS/MapGIS-Mobile-React-Native

RN开发库

MapGIS Mobile for ReactNative 开发库

配套示例

MapGIS Mobile for ReactNative配套示例也在github与gitee上提供,同步开发库功能,可分别在Android和IOS平台运行。借助Sample源码,可以帮助您进行高效开发。

giteehttps://gitee.com/osmapgis/MapGIS-Mobile-React-Native-Samples

RN开发示例

MapGIS Mobile for ReactNative 开发示例

githubhttps://github.com/MapGIS/MapGIS-Mobile-React-Native-Samples

RN开发示例

MapGIS Mobile for ReactNative 开发示例

如何使用

1、示例数据

请先在【司马云-开发世界-资源中心】下载MapGIS Mobile for Android SDK,下载解压后将samples\data\MapGISSample文件夹直接拷贝到设备存储的根目录下。

2、示例使用

请先按开发流程配置好对应平台的开发环境,如安装配置好Windows for Android开发环境,然后使用如下命令安装运行。注意初次打开运行APP需要进行二次开发授权验证,请先获得免费开发授权。

安装:

    yarn install

运行:

    #Android
    react-native run-android

示例功能

mapgis-reactnative-samples是基于MapGIS Mobile for ReactNative移动GIS跨平台开发框架编写的功能示例,目前主要包括地图显示模块、地图控制模块、地图覆盖物模块、要素查询模块、地图文档管理模块、专题图模块、地图工具模块。后续与开发库同步更新维护。

地图显示

支持MapGIS离在线矢量与瓦片地图,OGC服务地图,以及第三方地图如OSM地图、天地图、Google地图、百度地图、高德地图、Bing地图等,可显示三维场景地图(灰度模型)、叠加在线IGServer图层、叠加第三方在线图层。效果如下图所示:

地图显示

图 地图显示示例(第三方地图)

地图控制

地图控制功能,包括地图基本操作、地图手势控制、各类事件等。其中,地图背景设置、系统路径设置示例的效果如下图所示:

地图控制

图 地图控制示例(设置背景、系统库)

地图覆盖物

自定义图形功能,支持在地图上画点、线、圆、多边形,添加图像,添加文本。如新增交互绘制示例的具体效果如下图所示:

地图覆盖物

图 地图覆盖物示例(点、线、圆)

要素查询

要素查询指的是查询离在线地图要素的信息,包括要素的几何与属性信息,提供点、矩形、多边形等范围查询,属性条件查询,以及范围与条件两者结合的复合查询。点击查询与多边形查询的具体效果如下图所示:

要素查询

图 要素查询示例(点击查询、多边形查询)

地图文档管理

地图文档管理,包括地图基本信息、图层属性、图层状态控制等管理功能。地图基本信息、图层属性、图层控制、图层叠加示例的具体效果如下图所示:

地图文档管理

图 地图文档管理示例(地图信息、图层信息、叠加底图)

专题图

专题图目前支持简单(统一)专题图、单值(唯一值)专题图、范围(分段)专题图、多表达式分段专题图。具体效果如下图所示:

专题图

图 专题图示例

地图工具

地图工具模块目前主要新增草图编辑器示例,具体效果如下图所示:

工具

图 草图编辑器——流状线、流状区、点